iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0

在介紹過監控、yaml 控管、網路的端點暴露與附載平衡後,官方有給我們一些在,生產環境部署的建議。透過調整這些設定與部署方式,應可以使我們的 Open-Match 在水平拓展性、穩定性與可用性有更好的表現。

Setup grpc.KeepaliveEnforcementPolicy

這項設定的主要目的在於,我們使用 kubernetes 做水平拓展時,部分 pods 結束導致 gRPC 連線中斷,此時透過此設置,可以依據設置的檢查時間,適時地清除一些沒有反應的連線。以下為 client side & server side 的設置範例。

  • client side (參考 demo client 調整)

    conn, err = grpc.Dial("open-match-frontend.open-match.svc.cluster.local:50504", grpc.WithKeepaliveParams(
    		keepalive.ClientParameters{
    			Time: 20 * time.Second,
    			Timeout: 10* time.Second,
    			PermitWithoutStream: true,
    		},
    	))
    
  • server side (參考 soloduel 調整)

    server := grpc.NewServer(
    		grpc.KeepaliveEnforcementPolicy(
    			keepalive.EnforcementPolicy{
    				MinTime:             10 * time.Second,
    				PermitWithoutStream: true,
    			},
    		),
    	)
    

提供 client-side gRPC 附載平衡的能力

這部分個人認為是必須的,所以先前已經先透過 istio 做掉了,可以參考先前的介紹 Day23 Load balance with Istio。也可以參考官方提出的,使用 gRPC DNS resolver 解法試試。

啟用 Redis 哨兵模式

如果是採用 helm 部署 Op-Match 的話,預設 values sentinel 就已經是啟用的了,哨兵模式可以提供高可用性的 redis 服務,讓 Open-Match 有更穩定的表現,但同時啟用哨兵模式時,會消耗更多的資源,這點需要依自身使用的需求評估使否開啟。更多哨兵模式相關知識

抽換 Redis 時建議使用 bitnami 提供的 image

如同我們在 Day23 做過的,bitnami/redis 提供了我們高可用,且可自定義的 redis chart,通過 helm 指定參數部署,可以客製化自己想要的 redis,與 Open-Match 的溝通只需記得,部署核心時給定 redis host 即可。

helm install open-match --create-namespace --namespace open-match open-match/open-match \
  --set open-match-customize.enabled=true \
  --set open-match-customize.evaluator.enabled=true \
  --set open-match-override.enabled=true \
  --set open-match-core.redis.enabled=false \
  --set open-match-core.redis.hostname= # Your redis server address

上一篇
Day23 Load balance with Istio
下一篇
Day25 測試與評量 MMF
系列文
徵坦補! 新手可! Open-Match 配對框架30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言